import { IPSModelObject } from '../ipsmodel-object';
import { IPSDEAction } from '../dataentity/action/ipsdeaction';
import { IPSSysTestCaseAssert } from './ipssys-test-case-assert';
import { IPSSysTestData } from './ipssys-test-data';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSSysTestCaseInput
 */
export interface IPSSysTestCaseInput extends IPSModelObject {
  /**
   * 输入行为
   *
   * @type {IPSDEAction}
   */
  getInputPSDEAction(): IPSDEAction | null;

  /**
   * 输入行为
   *
   * @type {IPSDEAction}
   */
  get inputPSDEAction(): IPSDEAction | null;

  /**
   * 输入行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getInputPSDEActionMust(): IPSDEAction;

  /**
   * 输入标记
   * @type {string}
   */
  inputTag: string;

  /**
   * 输入标记2
   * @type {string}
   */
  inputTag2: string;

  /**
   * 输入标记3
   * @type {string}
   */
  inputTag3: string;

  /**
   * 输入标记4
   * @type {string}
   */
  inputTag4: string;

  /**
   * 输入类型
   * @description 值模式 [测试用例输入类型] {DATA：数据、 CUSTOMCODE：自定义代码、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'DATA' | 'CUSTOMCODE' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  inputType: string | 'DATA' | 'CUSTOMCODE' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 输入值
   * @type {string}
   */
  inputValue: string;

  /**
   * 输入断言集合
   *
   * @type {IPSSysTestCaseAssert[]}
   */
  getPSSysTestCaseAsserts(): IPSSysTestCaseAssert[] | null;

  /**
   * 输入断言集合
   *
   * @type {IPSSysTestCaseAssert[]}
   */
  get psSysTestCaseAsserts(): IPSSysTestCaseAssert[] | null;

  findPSSysTestCaseAssert(objKey: any): IPSSysTestCaseAssert | null;

  /**
   * 测试数据
   *
   * @type {IPSSysTestData}
   */
  getPSSysTestData(): IPSSysTestData | null;

  /**
   * 测试数据
   *
   * @type {IPSSysTestData}
   */
  get psSysTestData(): IPSSysTestData | null;

  /**
   * 测试数据（必须存在）
   *
   * @type {IPSSysTestData}
   */
  getPSSysTestDataMust(): IPSSysTestData;

  /**
   * 脚本代码
   * @type {string}
   */
  scriptCode: string;
}
